// m

// 给定一个字符串s

// 要求：逐个翻转字符串中所有的单词

// 说明： 数组字符串s可以在前面，后面或者单词之间包含多余的空格
// 翻转之后的单词应当只有一个空格分隔
// 翻转之后的字符串不应该包含额外的空格

// 思路1，调用api实现

function reverseWords(s) {
    return s.trim().split(/\s+/).reverse().join(' ')
}


// 思路2：根据api的思路写出模拟代码
function reverseWords2(s) {
    let words = []
    let cur = ''
    for (let i = 0; i < s.length; i++) {
        if (s[i] === ' ') {
            if (cur) {
                words.push(cur)
                cur = ''
            }
        } else {
            cur += s[i]
        }
    }
    if (cur) {
        words.push(cur)
    }

    for (let i = 0; i < Math.floor(words.length / 2); i++) {
        [words[i], words[words.length - 1 - i]] = [words[words.length - 1 - i], words[i]]        
    }

    return words.join(' ')
}

let s = "     hello world  abin"
console.log(reverseWords2(s));